package org.example.com.Test;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Update;
import org.example.com.Bean.Emp;
import org.example.com.Service.EmpService;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.ArrayList;
import java.util.List;
import java.util.Queue;

@SpringBootTest
@Slf4j
public class App {
    @Resource
    private EmpService empService;
    @Test
    public void find(){
        List<Emp> list = empService.list();
        list.forEach(emp -> {
            log.info("emp:{}", emp);
        });
    }
    @Test
    public void findById(){
        Emp emp = empService.getById(8025);
        log.info("emp:{}", emp);
    }
    @Test
    public void insert(){
        Emp emp = new Emp();
        emp.setComm(9087.0);
        emp.setJob("程序员");
        emp.setMgr(8989);
        emp.setDeptNo(20);
        emp.setSal(6999.9);
        emp.setEname("ddd");
        empService.save(emp);
    }
    @Test
    public void delete() {
        empService.removeById(8024);
    }
    @Test
   public void update(){
       Emp emp = new Emp();
        emp.setEmpNo(8040);
        emp.setJob("歌手");
        emp.setComm(89898.0);
       empService.updateById(emp);
   }
   @Test
   public void find1(){
        //按照职位进行查询
       //产生wrapper对象
       QueryWrapper<Emp> wrapper = new QueryWrapper<>();
       //设置条件
       wrapper.eq("job","程序员");
       //查询
       List<Emp> list = empService.list(wrapper);
       list.forEach(System.out::println);
   }
   @Test
    public void find2(){
        //按照职位进行查询
        //产生wrapper对象
        QueryWrapper<Emp> wrapper = new QueryWrapper<>();
        //设置条件
       //大于
        wrapper.gt("sal","30000");
        //查询
        List<Emp> list = empService.list(wrapper);
        list.forEach(System.out::println);
    }
    @Test
    public void find3(){
        //按照职位进行查询
        //产生wrapper对象
        QueryWrapper<Emp> wrapper = new QueryWrapper<>();
        //设置条件
        //小于
        wrapper.lt("sal","30000");
        //查询
        List<Emp> list = empService.list(wrapper);
        list.forEach(System.out::println);
    }
    @Test
    public void find4(){
        //按照职位进行查询
        //产生wrapper对象
        QueryWrapper<Emp> wrapper = new QueryWrapper<>();
        //设置条件
        //模糊查询
//        wrapper.like("ename","张");
//        wrapper.likeRight("ename","张");
        //查询
        wrapper.likeLeft("ename","张");
        wrapper.notLike("ename","张");
        List<Emp> list = empService.list(wrapper);
        list.forEach(System.out::println);
    }
    @Test
    public void find5(){
        //按照职位进行查询
        //产生wrapper对象
        QueryWrapper<Emp> wrapper = new QueryWrapper<>();
        //设置条件
//       升序
//        wrapper.orderByAsc("sal");
//        降序
        wrapper.orderByDesc("sal");
        //查询
        List<Emp> list = empService.list(wrapper);
        list.forEach(System.out::println);
    }
    @Test
    public void find6(){
        //按照职位进行查询
        //产生wrapper对象
        QueryWrapper<Emp> wrapper = new QueryWrapper<>();
        //设置条件
//        两个条件
//        wrapper.select("sal","ename");
//        函数插入
        wrapper.select("count(0),max(sal),min(sal),avg(sal)");
        //查询
        List<Emp> list = empService.list(wrapper);
        list.forEach(System.out::println);
    }
    @Test
    public void find7(){
        //按照职位进行查询
        //产生wrapper对象
        QueryWrapper<Emp> wrapper = new QueryWrapper<>();
        //设置条件
//        分组查询
        wrapper.groupBy("sal");
        wrapper.select("sal","count(*)");

        List<Emp> list = empService.list(wrapper);
        list.forEach(System.out::println);
    }
    @Test
    public void find8(){
        //按照职位进行查询
        //产生wrapper对象
        QueryWrapper<Emp> wrapper = new QueryWrapper<>();
        //设置条件
//        拼接查询
        wrapper.last("and job='程序员'");
        List<Emp> list = empService.list(wrapper);
        list.forEach(System.out::println);
    }
    @Test
    public void find9(){
        //按照职位进行查询
        //产生wrapper对象
        QueryWrapper<Emp> wrapper = new QueryWrapper<>();
        //设置条件
//        and查询
        wrapper.eq("job","程序员");
        wrapper.lt("sal","30000");
        wrapper.gt("comm",888);
        List<Emp> list = empService.list(wrapper);
        list.forEach(System.out::println);
    }
    @Test
    public void find10(){
        //按照职位进行查询
        //产生wrapper对象
        QueryWrapper<Emp> wrapper = new QueryWrapper<>();
        //设置条件
        wrapper.eq("job","程序员")
                .or().lt("sal","30000")
                .or().gt("comm",888);
        List<Emp> list = empService.list(wrapper);
        list.forEach(System.out::println);
    }
    @Test
    public void find11(){
        //按照职位进行查询
        //产生wrapper对象
        QueryWrapper<Emp> wrapper = new QueryWrapper<>();
        //设置条件
        wrapper.eq("job","程序员");
             wrapper.lt("sal","30000")
                .or().gt("comm",888);
        List<Emp> list = empService.list(wrapper);
        list.forEach(System.out::println);
    }
    @Test
    public void update1(){
        //按照职位进行查询
        //产生wrapper对象
        UpdateWrapper<Emp> wrapper = new UpdateWrapper<>();
        //设置条件
        wrapper.eq("ename","张三思");
        wrapper.set("ename","马三思");
        List<Emp> list = empService.list(wrapper);
        list.forEach(System.out::println);
    }
    @Test
    public void update2(){
     List<Emp> list = new ArrayList<>();
     Emp emp1 = new Emp();
     emp1.setSal(100.0);
     emp1.setEmpNo(8045);
     list.add(emp1);
        Emp emp2 = new Emp();
        emp2.setComm(8040.0);
        emp2.setEmpNo(8040);
        list.add(emp2);
        Emp emp3 = new Emp();
        emp3.setSal(200.0);
        emp3.setEname("张雪");
        emp3.setEmpNo(804);
        list.add(emp3);
      empService.piliangcaozuo(list);
    }



}
